import { Map } from "ol";
import BaseLayer from "ol/layer/Base";

/**
 * 向地图中添加一个图层组
 * 
 * 此函数用于将一组基础图层添加到指定的地图对象中它接受一个基础图层数组和一个地图对象作为参数，
 * 并为每个图层调用地图对象的addLayer方法添加图层函数返回一个回调函数，该回调函数用于从地图中移除所有之前添加的图层
 * 
 * @param params BaseLayer[] - 一个包含多个基础图层的数组，这些图层将被添加到地图中
 * @param map Map - 地图对象，图层将被添加到这个对象中
 * @returns Function - 返回一个函数，当调用此函数时，它会将之前添加的所有图层从地图中移除
 */
export function addLayerGroup(params: BaseLayer[], map: Map) {
  // 遍历图层数组，将每个图层添加到地图中
  params.forEach((layer) => {
    map.addLayer(layer);
  });

  // 返回一个函数，用于移除之前添加的所有图层
  return () => {
    // 再次遍历图层数组，将每个图层从地图中移除
    params.forEach((layer) => {
      map.removeLayer(layer);
    });
  }
}